/*
 * PesquisaData.java
 *
 *  Created on: 10/11/2011
 *      Author: Bugarin Woiski
 */

/********************************************************************
* Definicao do package a que esta classe pertence                   *
*********************************************************************/
package data;

/********************************************************************
* Listagem de packages incluidos                                    *
*********************************************************************/
import java.sql.*;
import java.util.*;
import utils.*;

/********************************************************************
* DESCRICAO DA CLASSE:
* 
* Esta classe implementa a camada de DADOS para acesso à tabela
* '_pesquisa' do banco de dados. As funcoes basicas de acesso sao:
*      + Incluir;
*      + Pesquisar;
*      + Inserir;
*      + etc.
* 
* Essas funcoes serao implementadas na medida de sua necessidade.
* Assim, qualquer caso de uso que a utilize pode incluir metodos à
* essa classe.
*********************************************************************/
public class PesquisaData
{
    /* ------------------- */
    /* Atributos do objeto */
    /* ------------------- */
    //null

    /* ---------------------- */
    /* Construtores do objeto */
    /* ---------------------- */
//    public UserMinhasPesquisas()
//    {
//        //null
//    }
    
    /* ----------------- */
    /* Métodos do objeto */
    /* ----------------- */
    //null
    
    /* ----------------- */
    /* Métodos da classe */
    /* ----------------- */
    /* Retorna os dados de uma pesquisa com id = pesq_id */
     public PesquisaDO consultar(int pesq_id, Transaction tr)
     throws Exception
     {
         PesquisaDO p = new PesquisaDO();
         Connection con = tr.getConnection();
         String sql = "SELECT * FROM " + Tabelas.PESQUISA + " WHERE " + Tabelas.PESQUISA_id + " =?;";
         PreparedStatement ps = con.prepareStatement(sql);
         ps.setInt(1, pesq_id);
         ResultSet rs = ps.executeQuery();
         //while(rs.next())
         //{
            p.setNome_Pesquisa(rs.getNString(Tabelas.PESQUISA_nome_pesquisa));
            p.setAsker_id(rs.getInt(Tabelas.PESQUISA_asker_id));
            p.setContrato_id(rs.getInt(Tabelas.PESQUISA_contrato_id));
            p.setData_Fim(rs.getTimestamp(Tabelas.PESQUISA_data_fim));
            p.setData_Solicitacao(rs.getTimestamp(Tabelas.PESQUISA_data_solicitacao));
            p.setData_Validacao(rs.getTimestamp(Tabelas.PESQUISA_data_validacao));
            p.setN_Max_Resp(rs.getInt(Tabelas.PESQUISA_n_max_resp));
            p.setN_Min_Resp(rs.getInt(Tabelas.PESQUISA_n_min_resp));
            p.setPesquisa_Paga(rs.getBoolean(Tabelas.PESQUISA_pesquisa_paga));
            p.setPesquisa_id(pesq_id);
            p.setPontuacao(rs.getInt(Tabelas.PESQUISA_pontuacao));
         //}
         return p;
     }//consultar
     
     /* Retorna o ID de todas as pesquisas vigentes */
     public LinkedList<Integer> pesquisasVigentes(Transaction tr)
     throws Exception
     {
         LinkedList<Integer> lista = new LinkedList<Integer>();
         Connection con = tr.getConnection();
         String sql = "SELECT id FROM _pesquisa WHERE (data_validacao <= CURRENT_TIMESTAMP AND (data_fim >= CURRENT_TIMESTAMP OR data_fim = 0) );";
         PreparedStatement ps = con.prepareStatement(sql);
         ResultSet rs = ps.executeQuery();
         while(rs.next())
         {
             int pesq_id = rs.getInt(Tabelas.PESQUISA_id);
             lista.add(pesq_id);
         }
         return lista;
     }//pesquisasVigentes
    
} //fim da classe